package com.nbsaas.boot.queue.task;

import java.time.LocalDateTime;

public interface Task {
    /**
     * 获取任务ID
     */
    String getId();

    /**
     * 获取任务执行时间
     */
    LocalDateTime getExecuteTime();

    /**
     * 执行任务
     */
    void execute();

    /**
     * 获取任务优先级
     */
    int getPriority();

    /**
     * 获取任务状态
     */
    TaskStatus getStatus();

    /**
     * 设置任务状态
     */
    void setStatus(TaskStatus status);

    /**
     * 获取最大重试次数
     */
    int getMaxRetries();

    /**
     * 获取当前重试次数
     */
    int getCurrentRetries();

    /**
     * 增加重试次数
     */
    void incrementRetries();

    /**
     * 获取重试间隔（毫秒）
     */
    long getRetryInterval();

    /**
     * 获取任务依赖的任务ID列表
     */
    String[] getDependencies();

    /**
     * 获取任务元数据
     */
    TaskMetadata getMetadata();

    /**
     * 设置任务元数据
     */
    void setMetadata(TaskMetadata metadata);
} 